package com.qf.pojo;

import java.util.Collection;
import java.util.LinkedHashMap;
import java.util.Map;

/**
 * @author Kuke
 * @date 2022/3/11 15:03
 * 购物车实体
 */
public class Cart {

    //里面包含购物车项(多个)
    //key:商品id
    //value:购物车项
    private Map<String,CartItem> map = new LinkedHashMap<>() ;

    //总计金额
    private Double totalMoney  = 0.0  ;


    //可以直接获取map集合中所有的值的集合
    //Collection<V> values()
    public Collection<CartItem> getItems(){ //items 就是购物车的bean属性
        return map.values() ;
    }

    public Map<String, CartItem> getMap() {
        return map;
    }

    public void setMap(Map<String, CartItem> map) {
        this.map = map;
    }

    public Double getTotalMoney() {
        return totalMoney;
    }

    public void setTotalMoney(Double totalMoney) {
        this.totalMoney = totalMoney;
    }

    //将购物车项加入购物车中
    public void addCartItem2Cart(CartItem cartItem){
        //判断购物车项是否是重复添加?
        //c从购物车项中获取商品id
        String pid = cartItem.getProduct().getPid();
        if(map.containsKey(pid)){
            //商品id重复
            //获取以前的购物车项,将商品数量和当前新加入购物车项的商品进行相加
            CartItem oldCartItem = map.get(pid);
            oldCartItem.setCount(oldCartItem.getCount()+cartItem.getCount());

        }else{
            //不重复
            map.put(pid,cartItem) ;
        }

        //总计金额
        totalMoney+=cartItem.getSubTotal() ;

    }

    //将购物车项从购物车中删除
    public void clearCartItemFromCart(String pid){
        CartItem cartItem = map.remove(pid);
        //总计金额变化
        totalMoney -=cartItem.getSubTotal() ;
    }


    //情况购物车
    public void clear(){
       map.clear();

       totalMoney = 0.0 ;
    }

    @Override
    public String toString() {
        return "Cart{" +
                "map=" + map +
                ", totalMoney=" + totalMoney +
                '}';
    }
}
